#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
using namespace std;
class Solution {
public:
    int mySqrt(int x) {
        double left = 0;
        double right = x;
        while (left < right)
        {
            double mid = left + (right - left + 1) / 2;
            if (mid * mid <= x)left = mid;
            else right = mid - 1;
        }
        return left;
    }
};
int main()
{
    Solution  s;
    int ret=s.mySqrt(4);
    cout << ret << endl;
    return 0;
}
//#include"add.h"
//#include<iostream>
//using namespace std;
//int main()
//{
//	int ret = add<int>(1, 2);
//	//cout << ret << endl;
//
//	return 0;
//}


//#include<stdio.h>
//#include<string.h>
//
//int main()
//{
//	char arr[] = "echo ";
//	char sep[] = " ";
//	char* argv[100];
//	int i = 0;
//	argv[i++] = strtok(arr, sep);
//	while (argv[i++] = strtok(NULL, sep));
//
//	return 0;
//}
//#include<iostream>
//#include<map>
//#include<set>
//#include<vector>
//#include<unordered_map>
//#include<unordered_set>
//
//using namespace std;
//
//class Date {
//public:
//	int _year = 1900;
//	int _month = 1;
//	int _day = 1;
//};
//struct BKDRhash {
//	size_t operator()(const string& str) {
//		size_t hashret = 0;
//		for (auto& e : str) {
//			hashret = hashret * 131 + e;
//		}
//		return hashret;
//	}
//};
//struct Datehash {
//	size_t operator()(const Date& d) {
//		size_t ret = d._year * 11 + d._month * 5 + d._day * 3;
//		return ret;
//	}
//};
//int main() {
//
//	unordered_set<Date> s1;
//	s1.insert({ 2021,1,3 });
//	return 0;
//}

//int main() {
//	//cout << 1000 % 6 << endl;
//	unordered_set<int>m1;
//	m1.insert(2);
//	m1.insert(7);
//	m1.insert(4);
//	m1.insert(5);
//	m1.insert(3);
//	m1.insert(8);
//	m1.insert(9);
//	m1.insert(88);
//	m1.insert(776);
//	m1.insert(555);
//
//	//m1.erase(1);
//	unordered_set<int, int>::iterator it = m1.find(78);
//	cout << *it << endl;
//
//	return 0;
//}
//int main() { 
//	int a[] = { 1,5,6,4,2,8,7,9,3 };
//	/*vector<int>const f(a, a + 5);
//
//	vector<int>::const_iterator it= f.begin();
//	while (it != f.end()) {
//		it++;
//	}*/
//	//set<int>  const m(a,a+5);
//	///*for (auto e : a) {
//	//	m.insert(make_pair(e, e));
//	//}*/
//
//	//set<int>::iterator it = m.begin();
//	//while (it != m.end()) {
//	//	cout << *it << endl;
//
//	//	//(*it) += 2;
//	//	it++;
//	//}
//	map<int,int>  const m;
//	/*for (auto e : a) {
//		m.insert(make_pair(e, e));
//	}*/
//
//	map<int,int>::const_iterator it = m.begin();
//	while (it != m.end()) {
//		cout << it->first << endl;
//
//		//(*it) += 2;
//		it++;
//	}
//	return 0;
//}
